interface ProductListParamsType {
  page: number
  limit: number
  cate_id: number | null
  type: number | null
  store_name: string | null
  sales: string | null
}

interface ProductInfoType {
  // activity: "1,0,2,3"
  add_time: number
  bar_code: string
  browse: number
  cate_id: (string | number)[]
  cate_name: string
  code_path: string
  collect: number
  command_word: string
  cost: string
  ficti: number
  give_integral: string
  id: number
  image: string
  is_bargain: null
  is_benefit: number
  is_best: number
  is_del: number
  is_good: number
  is_hot: number
  is_new: number
  is_postage: number
  is_seckill: number
  is_show: number
  is_sub: number
  is_vip: number
  keyword: string
  label_id: string
  likes: number
  mer_id: number
  mer_use: number
  ot_price: string
  postage: string
  price: string
  recommend_image: string
  sales: number
  slider_image: string[]
  sort: number
  soure_link: string
  spec_type: number
  spu: string
  stock: string
  stock_attr: true
  store_info: string
  store_name: string
  temp_id: number
  unit_name: string
  video_link: string
  vip_price: string
  visitor: number
  attr: any
  items: { value: string; detail: string[] }[]
}

interface ProductListType {
  list: ProductInfoType[]
  count: number
}

interface ProductDetailsType {
  productInfo: ProductInfoType
  cateList: any[]
  tempList: any[]
}

interface ProductFormType {
  store_name: string
  store_info: string
  cate_id: number[]
  keyword: string
  unit_name: string
  image: string
  recommend_image: string
  slider_image: string[]
  postage: string
  sort: number
  give_integral: number
  is_show: number
  is_hot: 0 | 1
  is_benefit: 0 | 1
  is_best: 0 | 1
  is_new: 0 | 1
  mer_use: string
  is_postage: 0 | 1
  is_good: 0 | 1
  spec_type: 0 | 1
  items: { value: string; detail: string[] }[]
  header: MultiAttrTableHeaderType[]
  attrs: AttrTableDataType[]
  coupon_ids: string
  label_id: string
  command_word: string
  video_link: string
  temp_id: string
  activity: string[]
  description: string
  ficti: number
}

interface ProductStatusType {
  type: number
  name: string
  count?: number
}

interface ProductAttrListType {
  list: ProductAttrType[]
  count: number
}

interface ProductAttrType {
  id: number
  rule_name: string
  rule_value: string
  attr_name: string
  attr_value: string[]
}

interface MultiAttrTabelType {
  info: {
    attr: MultiAttrListType[]
    header: MultiAttrTableHeaderType[]
    value: AttrTableDataType[]
  }
}

interface MultiAttrListType {
  value: string
  detail: string[]
}

interface MultiAttrTableHeaderType {
  title: string
  key?: string
  slot?: string
  align: string
  minWidth: number
}

interface AttrTableDataType {
  [key: string]: any
  bar_code: string
  brokerage: number
  brokerage_two: number
  cost: number
  detail?: any
  ot_price: number
  pic: string
  price: number
  stock: number
  vip_price: number
  volume: number
  weight: number
}

interface ProductAttrInfoType {
  id?: number
  rule_name: string
  spec: { value: string; detail: string[] }[]
}

interface ProductCommentType {
  id: number
  store_name: string
  nickname: string
  score: number
  comment: string
  merchant_reply_content: null
  time: string

  account: string
  add_time: string
  avatar: string
  create_time: string
  image: string
  is_del: number
  is_reply: number
  merchant_reply_time: null
  oid: number
  pics: string[]
  product_id: number
  product_score: number
  reply_type: string
  service_score: number
  uid: number
  unique: string
}

interface ProductCommentListType {
  list: ProductCommentType[]
  count: 0
}
